package org.springblade.modules.admin.service.erp;

import com.alibaba.fastjson.JSONObject;
import org.springblade.modules.admin.dto.erp.serivce.MultiplyBuyingLeadsDTO;
import org.springblade.modules.admin.dto.erp.serivce.PartnerCloudPartsSkuSyncDTO;
import org.springblade.modules.admin.vo.erp.service.BuyingLeadsVO;
import org.springblade.modules.admin.vo.erp.service.DeliveryVO;
import org.springblade.modules.admin.vo.erp.service.SalesOrderSearchVO;
import org.springblade.modules.admin.vo.erp.service.ShipmentDetailVO;

import java.util.List;

/**
 * 伙伴云配件Service接口
 * @author: Sharry
 * @createTime: 2024-12-26 15:22
 * @version: Version-1.0
 */
public interface IPartnerCloudPartsService {


	/**
	 * 根据配件工单id同步采购需求
	 */
	void syncPurchase(Long planId);

	/**
	 * 解析回调数据
	 * @param resultJsonObject 回调数据
	 * @return 解析结果
	 */
	Boolean analyzeCallBackData(JSONObject resultJsonObject);

	/**
	 * 同步配件库存
	 * @param partsSkuSyncDTO 入参
	 * @throws InterruptedException 抛异常
	 */
	void syncPartsSku(PartnerCloudPartsSkuSyncDTO partsSkuSyncDTO) throws InterruptedException;

	/**
	 * 发送配件库存id及其他简单字段
	 * @param partsSkuSyncDTO 入参
	 */
	void sendPartsSkuId(PartnerCloudPartsSkuSyncDTO partsSkuSyncDTO);

	/**
	 * 根据订单号，查询伙伴云订单列表与详情
	 * @param orderId 订单号
	 * @return 订单列表与详情
	 */
	List<SalesOrderSearchVO> searchOrderByOrderId(String orderId);

	/**
	 * 根据订单号，查询发货单
	 * @param orderId 订单号
	 * @return 发货单列表
	 */
	List<DeliveryVO> searchDeliveryByOrderId(String orderId);

	/**
	 * 根据发货单号，查询发货明细
	 * @param deliveryNote 发货单号
	 * @return 发货明细列表
	 */
	List<ShipmentDetailVO> searchShipmentDetailByDeliveryNote(String deliveryNote);

	List<SalesOrderSearchVO> searchOrderMainByOrderId(String orderId);

	/**
	 * 1：N 同步采购需求，根据planId，一次同步多条
	 * @param planId 工单id
	 */
	void syncMultiplyPurchase(Long planId, String tenantId);

	List<MultiplyBuyingLeadsDTO> selectMultiplyPurchaseByPlanId(Long planId, String tenantId);
}
